﻿' ******************************************************************************
' ** 
' **  Yahoo Finance Managed
' **  Written by Marius Häusler 2010
' **  It would be pleasant, if you contact me when you are using this code.
' **  Contact: YahooFinanceManaged@gmail.com
' **  Project Home: http://code.google.com/p/yahoo-finance-managed/
' **  
' ******************************************************************************
' **  
' **  Copyright 2010 Marius Häusler
' **  
' **  Licensed under the Apache License, Version 2.0 (the "License");
' **  you may not use this file except in compliance with the License.
' **  You may obtain a copy of the License at
' **  
' **    http://www.apache.org/licenses/LICENSE-2.0
' **  
' **  Unless required by applicable law or agreed to in writing, software
' **  distributed under the License is distributed on an "AS IS" BASIS,
' **  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' **  See the License for the specific language governing permissions and
' **  limitations under the License.
' ** 
' ******************************************************************************


Namespace Finance.Support

    ''' <summary>
    ''' Stores exchange rate informations of two currencies. Implements IID. Serializable. 
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class ExchangeRateData
        Inherits QuoteBaseData

        Private mCurrencyRelation As New YCurrencyID

        ''' <summary>
        ''' The both currencies representing the relation
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property CurrencyRelation() As YCurrencyID
            Get
                Return mCurrencyRelation
            End Get
            Set(ByVal value As YCurrencyID)
                If value IsNot Nothing Then : mCurrencyRelation = value
                Else : mCurrencyRelation = New YCurrencyID
                End If
            End Set
        End Property
        ''' <summary>
        ''' The dependent value of one unit of basecurrency
        ''' </summary>
        ''' <value></value>
        ''' <returns>Value of LastTradePriceOnly of quote values</returns>
        ''' <remarks></remarks>
        Public ReadOnly Property DependencyValue() As Double
            Get
                Return MyBase.LastTradePriceOnly
            End Get
        End Property

        ''' <summary>
        ''' Default constructor
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New()
        End Sub
        ''' <summary>
        ''' Overloaded constructor
        ''' </summary>
        ''' <param name="baseCur">The currency with the ratio value of 1</param>
        ''' <param name="cur">The currency of the dependent value</param>
        ''' <remarks></remarks>
        Public Sub New(ByVal baseCur As Currency, ByVal cur As Currency)
            mCurrencyRelation.BaseCurrency = baseCur
            mCurrencyRelation.DepCurrency = cur
            MyBase.SetID(mCurrencyRelation.ID)
        End Sub
        ''' <summary>
        ''' Overloaded constructor
        ''' </summary>
        ''' <param name="baseCur">The currency with the ratio value of 1</param>
        ''' <param name="cur">The currency of the dependent value</param>
        ''' <param name="quotes">The quote values of the relation</param>
        ''' <remarks></remarks>
        Public Sub New(ByVal baseCur As Currency, ByVal cur As Currency, ByVal quotes As QuoteBaseData)
            mCurrencyRelation.BaseCurrency = baseCur
            mCurrencyRelation.DepCurrency = cur
            MyBase.CopyData(quotes)
        End Sub

        Public Overrides Function ToString() As String
            If mCurrencyRelation.DepName <> String.Empty Then
                Return mCurrencyRelation.DepName & " (" & mCurrencyRelation.DepCurrency.ToString & ")"
            Else
                Return MyBase.ToString
            End If
        End Function

    End Class

End Namespace